#include "htexturecouleur.h"

//-----------------------------------------------------Constructeurs et destructeurs-----------------------------------------------------//

/****************************************************************************
 * Constructeur par défault                                                 *
 ****************************************************************************/
HTextureCouleur::HTextureCouleur()
{
    _rouge = _vert = _bleu = 0.0;
    _texture = NULL;
    _nomTexture = "";
}

/****************************************************************************
 * Constructeur à 4 paramètres                                              *
 * @param nomTexture : le nom de la texture dans les ressources             *
 * @param r : la composante rouge de la couleur                             *
 * @param v : la composante verte de la couleur                             *
 * @param b : la composante bleu de la couleur                             *
 ****************************************************************************/
HTextureCouleur::HTextureCouleur(QString nomTexture, GLfloat r, GLfloat v, GLfloat b)
    :_rouge(r), _vert(v), _bleu(b), _nomTexture(nomTexture)
{
    _texture = &GestionnaireTextures::getInstance().getTexture(nomTexture);
}


/****************************************************************************
 * Destructeur                                                              *
 ****************************************************************************/
HTextureCouleur::~HTextureCouleur()
{
    //NOTE : NE PAS DELETE _texture. Géré dans le gestionnaireTextures
}

//---------------------------------------------------------------Méthodes----------------------------------------------------------------//

/****************************************************************************
 * On utilise l'habillage couleur                                           *
 ****************************************************************************/
void HTextureCouleur::utiliser()
{
    //On configure l'environement pour que la texture prenne en compte la couleur courante
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
    glColor3f(_rouge, _vert, _bleu);

    if(_texture != NULL)
        _texture->utiliser();
}

//---------------------------------------------------------------Accesseurs--------------------------------------------------------------//

/****************************************************************************
 * Accesseur sur la couleur rouge                                           *
 * @return : la composante rouge de la couleur                              *
 ****************************************************************************/
GLfloat HTextureCouleur::getR()
{
    return _rouge;
}

/****************************************************************************
 * Accesseur sur la couleur verte                                           *
 * @return : la composante verte de la couleur                              *
 ****************************************************************************/
GLfloat HTextureCouleur::getV()
{
    return _vert;
}

/****************************************************************************
 * Accesseur sur la couleur bleue                                           *
 * @return : la composante bleue de la couleur                              *
 ****************************************************************************/
GLfloat HTextureCouleur::getB()
{
    return _bleu;
}

/****************************************************************************
 * Mutateur sur la couleur rouge                                            *
 * @param r : la composante rouge de la couleur                             *
 ****************************************************************************/
void HTextureCouleur::setR(GLfloat r)
{
    this->_rouge = r;
}

/****************************************************************************
 * Mutateur sur la couleur verte                                            *
 * @param r : la composante verte de la couleur                             *
 ****************************************************************************/
void HTextureCouleur::setV(GLfloat v)
{
    this->_vert = v;
}

/****************************************************************************
 * Mutateur sur la couleur bleue                                            *
 * @param r : la composante bleue de la couleur                             *
 ****************************************************************************/
void HTextureCouleur::setB(GLfloat b)
{
    this->_bleu = b;
}


//------------------------------------------------------Surcharge des opérateurs---------------------------------------------------------//


